/*
 * NoweZdjecie.java
 *
 * Created on 2011-04-10, 14:14:17
 * Updated on 2011-05-04
 */
package medimg.widok.badania;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import medimg.scheme.Badania;
import medimg.scheme.Pacjenci;
import medimg.scheme.Personel;
import medimg.scheme.RodzajBadan;
import medimg.scheme.Zdjecia;
import org.hibernate.JDBCException;
import org.hibernate.Session;

/**
 *  Klasa zarządzająca dodawaniem zdjęć do badań pacjentów
 *
 * @author PSI
 * @version 1.00
 */
public class NoweZdjecie extends javax.swing.JDialog {

    private DefaultListModel modelBadan;
    private File plik;
    private Badania wyborBadania;
    private byte[] bufor;

    /** Tworzy nowe okno NoweZdjecie */
    public NoweZdjecie(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        UIManager.put("FileChooser.openButtonText", "Otwórz");
        UIManager.put("FileChooser.cancelButtonText", "Zamknij");
        UIManager.put("FileChooser.cancelButtonToolTipText", "Zamknij okno");
        UIManager.put("FileChooser.openButtonToolTipText", "Otwarcie pliku");
        UIManager.put("FileChooser.fileNameLabelText", "Nazwa pliku :");
        UIManager.put("FileChooser.filesOfTypeLabelText", "Rodzaj pliku :");
        UIManager.put("FileChooser.lookInLabelText", "Katalogi :");
        UIManager.put("FileChooser.openDialogTitleText", "Otwórz");
        initComponents();
        this.setLocationRelativeTo(parent);
        modelBadan = new DefaultListModel();
        jListBadanie.setModel(modelBadan);
        wyborBadania = new Badania();
        pobierzBadania();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jFileChooserZdjecie = new javax.swing.JFileChooser();
        jLabelBadanie = new javax.swing.JLabel();
        jLabelData = new javax.swing.JLabel();
        jLabelPlik = new javax.swing.JLabel();
        jLabelOpis = new javax.swing.JLabel();
        jCheckBoxDataAktualna = new javax.swing.JCheckBox();
        jLabelWzorzecDaty = new javax.swing.JLabel();
        jTextFieldPlik = new javax.swing.JTextField();
        jButtonPlik = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextAreaOpis = new javax.swing.JTextArea();
        jButtonAnuluj = new javax.swing.JButton();
        jButtonZalaczPlik = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        jListBadanie = new javax.swing.JList();
        jTextFieldFiltr = new javax.swing.JTextField();
        jLabelFiltr = new javax.swing.JLabel();
        jProgressBarZalacz = new javax.swing.JProgressBar();
        jTextFieldData = new javax.swing.JFormattedTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Nowe zdjęcie");
        setModal(true);
        setName("NoweZdjecie"); // NOI18N
        setResizable(false);

        jLabelBadanie.setText("Badanie");

        jLabelData.setText("Data");

        jLabelPlik.setText("Plik");

        jLabelOpis.setText("Opis");

        jCheckBoxDataAktualna.setText("Dziś");
        jCheckBoxDataAktualna.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBoxDataAktualnaActionPerformed(evt);
            }
        });

        jLabelWzorzecDaty.setText("rrrr-mm-dd");

        jTextFieldPlik.setEnabled(false);

        jButtonPlik.setText("Wybierz plik...");
        jButtonPlik.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonPlikActionPerformed(evt);
            }
        });

        jTextAreaOpis.setColumns(20);
        jTextAreaOpis.setRows(5);
        jScrollPane1.setViewportView(jTextAreaOpis);

        jButtonAnuluj.setText("Anuluj");
        jButtonAnuluj.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAnulujActionPerformed(evt);
            }
        });

        jButtonZalaczPlik.setText("Załącz plik");
        jButtonZalaczPlik.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonZalaczPlikActionPerformed(evt);
            }
        });

        jListBadanie.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jScrollPane2.setViewportView(jListBadanie);

        jTextFieldFiltr.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jTextFieldFiltrKeyReleased(evt);
            }
        });

        jLabelFiltr.setText("Filtr");

        jTextFieldData.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter()));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelBadanie)
                    .addComponent(jLabelFiltr)
                    .addComponent(jLabelData)
                    .addComponent(jLabelPlik)
                    .addComponent(jLabelOpis))
                .addGap(13, 13, 13)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 498, Short.MAX_VALUE)
                    .addComponent(jTextFieldFiltr, javax.swing.GroupLayout.PREFERRED_SIZE, 214, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jCheckBoxDataAktualna)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jTextFieldData, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(jProgressBarZalacz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(198, 198, 198)
                                .addComponent(jButtonZalaczPlik)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jButtonAnuluj))
                            .addComponent(jLabelWzorzecDaty)))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 498, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jTextFieldPlik, javax.swing.GroupLayout.PREFERRED_SIZE, 258, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButtonPlik)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextFieldFiltr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelFiltr))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelBadanie)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jCheckBoxDataAktualna)
                    .addComponent(jLabelData)
                    .addComponent(jLabelWzorzecDaty)
                    .addComponent(jTextFieldData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelPlik)
                    .addComponent(jTextFieldPlik, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButtonPlik))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelOpis)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButtonAnuluj)
                        .addComponent(jButtonZalaczPlik))
                    .addComponent(jProgressBarZalacz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(12, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonAnulujActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAnulujActionPerformed
        this.dispose();
    }//GEN-LAST:event_jButtonAnulujActionPerformed

    private void jButtonPlikActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonPlikActionPerformed
        FiltrPliku filtr = new FiltrPliku();
        jFileChooserZdjecie.setFileFilter(filtr);
        jFileChooserZdjecie.setAcceptAllFileFilterUsed(false);
        jFileChooserZdjecie.showOpenDialog(this);
        plik = jFileChooserZdjecie.getSelectedFile();
        jTextFieldPlik.setText(plik.getPath());
    }//GEN-LAST:event_jButtonPlikActionPerformed

    private void jButtonZalaczPlikActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonZalaczPlikActionPerformed
        new Thread(new ThreadZdjecie()).start();
    }//GEN-LAST:event_jButtonZalaczPlikActionPerformed

    private void jCheckBoxDataAktualnaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxDataAktualnaActionPerformed
        if (jCheckBoxDataAktualna.isSelected()) {
            GregorianCalendar gc = new GregorianCalendar();
            java.sql.Date dzis = new java.sql.Date(gc.getTimeInMillis());
            jTextFieldData.setText(dzis.toString());
            jTextFieldData.setEnabled(false);
        } else {
            jTextFieldData.setText(null);
            jTextFieldData.setEnabled(true);
        }
    }//GEN-LAST:event_jCheckBoxDataAktualnaActionPerformed

    private void jTextFieldFiltrKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldFiltrKeyReleased
        filtrujBadania(jTextFieldFiltr.getText(), modelBadan);
    }//GEN-LAST:event_jTextFieldFiltrKeyReleased

    /**
     * Metoda umieszczająca zdjęcia do bazy danych
     * @param zdjecie obiekt reprezentujący zdjęcie
     * @return czy zdjęcie zostało dodane
     */
    private boolean zatwierdzenieZdjecia(Zdjecia zdjecie) {
        Session session = medimg.hibernate.HibernateUtil.getSessionFactory().getCurrentSession(); //pobranie obecnej sesji (autostart jesli jej nie ma)
        try {
            session.beginTransaction(); //rozpoczecie transakcji
            session.save(zdjecie);
            session.getTransaction().commit();
        } catch (JDBCException ex) {
            session.getTransaction().rollback(); //jesli sie nie udalo to rollback zeby dane byly zgodne
            return false;
        }
        return true;
    }

    /**
     * Metoda odczytująca wybór badania przez użytkownika
     */
    private void odczytBadania() {
        if (!medimg.hibernate.HibernateUtil.isOpen()) {
            JOptionPane.showConfirmDialog(this, "Najpierw podłącz się do bazy.", "Nie polaczono", JOptionPane.DEFAULT_OPTION);
            return;
        }
        Session session = medimg.hibernate.HibernateUtil.getSessionFactory().getCurrentSession(); //pobranie obecnej sesji (autostart jesli jej nie ma)
        Badania badanie = new Badania();
        String wybor = jListBadanie.getSelectedValue().toString();
        int indeks = wybor.indexOf("<");
        int indeks2 = wybor.indexOf(">");
        String id = wybor.substring(indeks + 1, indeks2);

        try {
            session.beginTransaction(); //rozpoczecie transakcji
            badanie = (Badania) (session.createQuery("from Badania where id = '" + id + "'").uniqueResult());
            session.getTransaction().commit();
        } catch (JDBCException ex) {
            session.getTransaction().rollback(); //jesli sie nie udalo to rollback zeby dane byly zgodne
        }

        wyborBadania = badanie;
    }

    /**
     * Metoda przekształcająca podany tekst daty w bazodanową datę
     * @param strDate tekst daty
     * @return przetworzoną datę
     */
    private java.sql.Date toSqlDate(String strDate) {
        DateFormat dateFrm = new SimpleDateFormat("yyyy-MM-dd");
        java.util.Date myDate = new java.util.Date();
        java.sql.Date sqlDate;

        try {
            myDate = dateFrm.parse(strDate);
            sqlDate = new java.sql.Date(myDate.getTime());
        } catch (Exception e) {
            sqlDate = null;
        }

        return (sqlDate);
    }

    /**
     * Metoda sprawdzająca czy użytkownik wybrał wymagane dane do dodania zdjęcia
     * @return czy walidacja przebiegła prawidłowo
     */
    private boolean walidacjaDanych() {
        if (jListBadanie.getSelectedIndex() == -1) {
            JOptionPane.showConfirmDialog(this, "Zaznacz badanie!", "Blad", JOptionPane.DEFAULT_OPTION);
            return false;
        } else if (toSqlDate(jTextFieldData.getText()) == null) {
            JOptionPane.showConfirmDialog(this, "Okresl date zgodnie z formatem!", "Blad", JOptionPane.DEFAULT_OPTION);
            return false;
        } else if (jTextFieldPlik.getText().isEmpty()) {
            JOptionPane.showConfirmDialog(this, "Wybierz plik!", "Blad", JOptionPane.DEFAULT_OPTION);
            return false;
        } else if (jTextAreaOpis.getText().isEmpty()) {
            JOptionPane.showConfirmDialog(this, "Dodaj opis!", "Blad", JOptionPane.DEFAULT_OPTION);
            return false;
        }
        return true;
    }

    /**
     * Metoda filtrująca listę badań
     * @param filtr tekst podany jako filtr badań
     * @param model model reprezentujący badania na liście badań
     */
    private void filtrujBadania(String filtr, DefaultListModel model) {
        if (filtr.length() == 0) { //jesli filtr pusty to przywroc stary model ktory zawiera wszystkie rekordy
            jListBadanie.setModel(model);
        } else {
            DefaultListModel newModel = new DefaultListModel();
            for (int i = 0; i < model.getSize(); i++) {
                int indeks = model.getElementAt(i).toString().indexOf("[");
                String pacjent = model.getElementAt(i).toString().substring(indeks + 1);
                if (pacjent.indexOf(filtr) == 0) {
                    newModel.addElement(model.getElementAt(i));
                }
            }
            jListBadanie.setModel(newModel);
        }
    }

    /**
     * Metoda pobierająca z bazy danych badania aktualizujące liste badań
     */
    private void pobierzBadania() {
        if (!medimg.hibernate.HibernateUtil.isOpen()) {
            JOptionPane.showConfirmDialog(this, "Najpierw podłącz się do bazy.", "Nie polaczono", JOptionPane.DEFAULT_OPTION);
            return;
        }
        modelBadan.removeAllElements();
        ArrayList<Badania> listaBadan = null;
        RodzajBadan rodzaj = null;
        Pacjenci pacjent = null;
        Personel lekarz = null;

        Session session = medimg.hibernate.HibernateUtil.getSessionFactory().getCurrentSession(); //pobranie obecnej sesji (autostart jesli jej nie ma)
        try {
            session.beginTransaction(); //rozpoczecie transakcji
            listaBadan = new ArrayList<Badania>(session.createQuery("from Badania").list());
            session.getTransaction().commit();
        } catch (JDBCException ex) {
            session.getTransaction().rollback(); //jesli sie nie udalo to rollback zeby dane byly zgodne
        }

        if (listaBadan != null && !listaBadan.isEmpty()) {
            for (Badania bad : listaBadan) {
                Session session2 = medimg.hibernate.HibernateUtil.getSessionFactory().getCurrentSession();
                try {
                    session2.beginTransaction(); //rozpoczecie transakcji
                    rodzaj = (RodzajBadan) (session2.createQuery("from RodzajBadan where id = '" + bad.getRodzaj() + "'").uniqueResult());
                    pacjent = (Pacjenci) (session2.createQuery("from Pacjenci where id = '" + bad.getPacjent() + "'").uniqueResult());
                    lekarz = (Personel) (session2.createQuery("from Personel where id = '" + bad.getLekarz() + "'").uniqueResult());
                    session2.getTransaction().commit();
                } catch (JDBCException ex) {
                    session2.getTransaction().rollback(); //jesli sie nie udalo to rollback zeby dane byly zgodne
                }
                modelBadan.addElement("<" + bad.getId() + "> <" + bad.getData() + "> <" + rodzaj.getNazwa() + "> <" + lekarz.getNazwisko()
                        + " " + lekarz.getImie() + "> [" + pacjent.getNazwisko() + " " + pacjent.getImie() + "] <" + bad.getDiagnoza() + ">");
            }
        } else {
            JOptionPane.showConfirmDialog(this, "Nie pobrano zadnych danych.", "Brak danych", JOptionPane.DEFAULT_OPTION);
        }
    }

    /**
     * Klasa wątku obsługująca dodawania zdjęć do bazy z raportowaniem
     * postępów za pomocą progressbara.
     */
    public class ThreadZdjecie implements Runnable {

        public void run() {
            if (walidacjaDanych()) {
            //new Thread(new thread()).start();
            InputStream is = null;
            int i = 0;
            bufor = new byte[(int) plik.length()];
            jProgressBarZalacz.setMaximum((int) plik.length());
            jProgressBarZalacz.setStringPainted(true);
            jButtonZalaczPlik.setEnabled(false);
            jButtonPlik.setEnabled(false);
            jButtonAnuluj.setEnabled(false);
            jListBadanie.setEnabled(false);
            jTextAreaOpis.setEnabled(false);
            jTextFieldFiltr.setEnabled(false);
            jTextFieldData.setEnabled(false);
            jCheckBoxDataAktualna.setEnabled(false);
            try {
                is = new FileInputStream(plik);
                int odczytBajtu = 0;
                try {
                    while ((odczytBajtu = is.read()) != -1) {
                        bufor[i] = (byte) odczytBajtu;
                        i++;
                        jProgressBarZalacz.setValue(i);
                        jProgressBarZalacz.repaint();
                    }
                } catch (IOException ex) {
                    JOptionPane.showConfirmDialog(null, "Blad odczytu pliku!", "Blad", JOptionPane.DEFAULT_OPTION);
                }
            } catch (FileNotFoundException ex) {
                JOptionPane.showConfirmDialog(null, "Nie znaleziono pliku!", "Blad", JOptionPane.DEFAULT_OPTION);
            }
            jButtonZalaczPlik.setEnabled(true);
            jButtonPlik.setEnabled(true);
            jButtonAnuluj.setEnabled(true);
            jListBadanie.setEnabled(true);
            jTextAreaOpis.setEnabled(true);
            jTextFieldFiltr.setEnabled(true);
            jTextFieldData.setEnabled(true);
             jCheckBoxDataAktualna.setEnabled(true);
            odczytBadania();
            Zdjecia noweZdjecie = new Zdjecia();
            noweZdjecie.setBadanie(wyborBadania.getId());
            noweZdjecie.setDataWykonania(toSqlDate(jTextFieldData.getText()));
            noweZdjecie.setNazwaPliku(plik.getName());
            noweZdjecie.setOpis(jTextAreaOpis.getText());
            noweZdjecie.setZdjecie(bufor);
            if (zatwierdzenieZdjecia(noweZdjecie)) {
                JOptionPane.showConfirmDialog(null, "Dodales zdjecie!", "Sukces", JOptionPane.DEFAULT_OPTION);
                jTextFieldFiltr.setText(null);
                jTextAreaOpis.setText(null);
                jTextFieldPlik.setText(null);
                jTextFieldData.setText(null);
                jCheckBoxDataAktualna.setSelected(false);
                jListBadanie.setModel(modelBadan);
                jProgressBarZalacz.setValue(0);
            } else {
                JOptionPane.showConfirmDialog(null, "Dodanie zdjecia nie powiodlo sie!", "Blad", JOptionPane.DEFAULT_OPTION);
            }
        } else {
            JOptionPane.showConfirmDialog(null, "Dodanie zdjecia nie powiodlo sie!", "Blad", JOptionPane.DEFAULT_OPTION);
        }
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                NoweZdjecie dialog = new NoweZdjecie(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {

                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonAnuluj;
    private javax.swing.JButton jButtonPlik;
    private javax.swing.JButton jButtonZalaczPlik;
    private javax.swing.JCheckBox jCheckBoxDataAktualna;
    private javax.swing.JFileChooser jFileChooserZdjecie;
    private javax.swing.JLabel jLabelBadanie;
    private javax.swing.JLabel jLabelData;
    private javax.swing.JLabel jLabelFiltr;
    private javax.swing.JLabel jLabelOpis;
    private javax.swing.JLabel jLabelPlik;
    private javax.swing.JLabel jLabelWzorzecDaty;
    private javax.swing.JList jListBadanie;
    private javax.swing.JProgressBar jProgressBarZalacz;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextArea jTextAreaOpis;
    private javax.swing.JFormattedTextField jTextFieldData;
    private javax.swing.JTextField jTextFieldFiltr;
    private javax.swing.JTextField jTextFieldPlik;
    // End of variables declaration//GEN-END:variables
}
